#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main(int argc, char const *argv[])
{
	// 创建子进程
	pid_t son = fork();
	if(son > 0) // 父进程
	{
		printf("我是父进程\n");
		printf("当前的pid=%d\n", getpid());
		printf("当前的父进程的pid=%d\n", getppid());
		int status;
		wait(&status); // 获取子进程的退出值
		// 判断子进程是否为正常退出
		if(WIFEXITED(status))
		{
			printf("当前子进程是正常退出\n");
			printf("子进程的退出值=%d\n", WEXITSTATUS(status));
		}
		// 判断是否为信号终止
		else if(WIFSIGNALED(status))
		{
			printf("当前子进程是被信号终止\n");
			printf("造成退出的信号值=%d\n", WTERMSIG(status));
		}
	}
	else if(son == 0) // 子进程
	{
		printf("我是子进程\n");
		printf("当前的pid=%d\n", getpid());
		printf("当前的父进程的pid=%d\n", getppid());
		sleep(50);
		exit(15);
	}
	
	return 0;
}
